package com.example.supernote.model.note.operations

import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.AddCircle
import androidx.compose.material.icons.filled.EditNote
import androidx.compose.material.icons.filled.ListAlt
import androidx.compose.material.icons.filled.MoreHoriz
import com.example.supernote.R
import com.example.supernote.model.note.commandGroups.AbstractCommandGroup
import com.example.supernote.model.note.commandGroups.AiDealCommandGroup
import com.example.supernote.model.note.commandGroups.CodeCommandGroup
import com.example.supernote.model.note.commandGroups.FontStylesCommandGroup
import com.example.supernote.model.note.commandGroups.GeneralCommandGroup
import com.example.supernote.model.note.commandGroups.HeadersCommandGroup
import com.example.supernote.model.note.commandGroups.ImageCommandGroup
import com.example.supernote.model.note.commandGroups.MoreCommandGroup
import com.example.supernote.model.note.commandGroups.PositionCommandGroup
import com.example.supernote.model.note.commandGroups.TableCommandGroup
import com.example.supernote.model.note.commandGroups.VideoCommandGroup
import com.example.supernote.model.note.commandGroups.VoiceCommandGroup

class TextCommandGroup : AbstractOpration(R.string.note_text, Icons.Filled.EditNote) {
    override fun getGroups(): MutableList<AbstractCommandGroup> =
        mutableListOf(
            HeadersCommandGroup(),
            FontStylesCommandGroup(),
            AiDealCommandGroup()
        )
}

class LayoutCommandGroup : AbstractOpration(R.string.note_layout, Icons.Filled.ListAlt) {
    override fun getGroups(): MutableList<AbstractCommandGroup> =
        mutableListOf(
            TableCommandGroup(),
            PositionCommandGroup()
        )
}


class InsertCommandGroup : AbstractOpration(R.string.note_insert, Icons.Filled.AddCircle) {
    override fun getGroups(): MutableList<AbstractCommandGroup> =
        mutableListOf(
            GeneralCommandGroup(),
            CodeCommandGroup(),
            ImageCommandGroup(),
            VoiceCommandGroup(),
            VideoCommandGroup(),
        )
}

class MoreCommandGroup : AbstractOpration(R.string.note_more, Icons.Filled.MoreHoriz) {
    override fun getGroups(): MutableList<AbstractCommandGroup> =
        mutableListOf(
            MoreCommandGroup()
        )
}